import {
  setSensorData,
  setSensorCrossCount,
  setSensorSerialNumber,
} from "store";
import IncomingParser from "./IncomingParser";

const parser = new IncomingParser();

export const incomingParser = (uint8T: number[]) => {
  parser.prepareWith(uint8T);
  let result = parser.parse();

  while(result) {
    const {
      uint8T,
      cmdCode,
      channelNumber,
      sequenceNumber,
    } = result;

    switch (cmdCode) {
      case 0x22: { // Возьми значение датчиков
        setSensorData({ channelNumber, sequenceNumber, uint8T });
        break;
      }

      case 1: // Возврат циркуляра опроса серийников
      case 0x21: { // Возврат циркуляра опроса датчиков
        setSensorCrossCount({
          channelNumber,
          sequenceNumber
        });

        break;
      }

      case 2: { // Возьми серийный номер
        setSensorSerialNumber({ channelNumber, sequenceNumber, uint8T });
        break;
      }
    }

    result = parser.parse();
  }
};
